class Matrix {
  m;

  constructor(martix) {
    this.m = martix;
  }

  // 行数
  get rowsNum() {
    return this.m.length;
  }

  // 列数
  get colsNum() {
    if (!this.m) {
      console.log(`matrix获取列异常,${this.m}`);
      return 0;
    }
    return this.m[0].length;
  }

  each(cb) {
    for (let j = 0; j < this.colsNum; j++) {
      for (let i = 0; i < this.rowsNum; i++) {
        const element = this.m[i][j];
        cb(element, i, j);
      }
    }
  }

  // 数据转置

  // 转置前
  // 红 大 跑
  // 黄 中 跳
  // 蓝 小 蹲

  // 转置后
  // 红 黄 蓝
  // 大 中 小
  // 跑 跳 蹲
  transpose() {
    const desArr = [];
    for (let j = 0; j < this.colsNum; j++) {
      desArr[j] = [];
      for (let i = 0; i < this.rowsNum; i++) {
        desArr[j][i] = this.m[i][j];
      }
    }
    return desArr;
  }
}

export { Matrix };
